/**
 * 目的：
 * 1. 让具体英雄类具备实现多态性的能力
 * 2. 规范子类必须实现的方法
 * 
 * 选用抽象类而不是接口的原因：
 * 抽象工厂方法模式突出简单，选用接口会让整个模式理解上显得更加复杂
 */
export abstract class Hero {

    protected name:string = "";

    show():void{
        console.log(`英雄${this.name}登场！`)
    }

    abstract q_skill():void;

    abstract w_skill():void;

    abstract e_skill():void;

    abstract r_skill():void;
}